// "use client";

// import { systemConfigApi } from '@/constants';
// import { get, post, put, patch, del } from '@/util/api';

// // 配置项基本信息接口
// export interface ConfigBase {
//   key: string;
//   value: any;
//   type: 'string' | 'number' | 'boolean' | 'object' | 'array';
//   description?: string;
//   group?: string;
//   isPublic?: boolean;
//   isSystem?: boolean;
//   options?: any;
// }

// // 配置项响应接口
// export interface Config extends ConfigBase {
//   id: number;
//   createdAt: string;
//   updatedAt: string;
//   createdBy?: number;
//   updatedBy?: number;
// }

// // 配置组接口
// export interface ConfigGroup {
//   name: string;
//   label: string;
//   description?: string;
//   priority: number;
//   configs: Config[];
// }

// // 配置变更日志接口
// export interface ConfigChangeLog {
//   id: number;
//   configKey: string;
//   oldValue: any;
//   newValue: any;
//   changedBy?: number;
//   changedByName?: string;
//   description?: string;
//   createdAt: string;
// }

// /**
//  * 配置管理服务类
//  * 封装所有配置相关的API调用
//  */
// class ConfigService {
//   /**
//    * 获取所有配置
//    * @param params 查询参数
//    * @returns Promise<Config[]>
//    */
//   async getAllConfigs(params?: {
//     group?: string;
//     isPublic?: boolean;
//     isSystem?: boolean;
//   }): Promise<Config[]> {
//     try {
//       const response = await get(configApi.LIST, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取配置列表失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取配置组列表
//    * @returns Promise<ConfigGroup[]>
//    */
//   async getConfigGroups(): Promise<ConfigGroup[]> {
//     try {
//       const response = await get(configApi.GROUPS);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取配置组列表失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取配置详情
//    * @param id 配置ID或key
//    * @returns Promise<Config>
//    */
//   async getConfigDetail(id: number | string): Promise<Config> {
//     try {
//       const response = await get(typeof id === 'number' ? configApi.DETAIL(id) : configApi.BY_KEY(id));
//       return response.data || response;
//     } catch (error) {
//       console.error(`获取配置详情失败 (ID/Key: ${id}):`, error);
//       throw error;
//     }
//   }

//   /**
//    * 创建配置
//    * @param configData 配置数据
//    * @returns Promise<Config>
//    */
//   async createConfig(configData: ConfigBase): Promise<Config> {
//     try {
//       const response = await post(configApi.CREATE, configData);
//       return response.data || response;
//     } catch (error) {
//       console.error('创建配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 更新配置
//    * @param id 配置ID
//    * @param configData 配置数据
//    * @returns Promise<Config>
//    */
//   async updateConfig(id: number, configData: Partial<ConfigBase>): Promise<Config> {
//     try {
//       const response = await put(configApi.UPDATE(id), configData);
//       return response.data || response;
//     } catch (error) {
//       console.error(`更新配置失败 (ID: ${id}):`, error);
//       throw error;
//     }
//   }

//   /**
//    * 更新多个配置
//    * @param configs 配置数据数组
//    * @returns Promise<Config[]>
//    */
//   async updateConfigs(configs: Array<{ id: number; value: any }>): Promise<Config[]> {
//     try {
//       const response = await patch(configApi.BATCH_UPDATE, { configs });
//       return response.data || response;
//     } catch (error) {
//       console.error('批量更新配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 删除配置
//    * @param id 配置ID
//    */
//   async deleteConfig(id: number): Promise<void> {
//     try {
//       await del(configApi.DELETE(id));
//     } catch (error) {
//       console.error(`删除配置失败 (ID: ${id}):`, error);
//       throw error;
//     }
//   }

//   /**
//    * 批量删除配置
//    * @param ids 配置ID数组
//    * @returns Promise<{ success: number; failed: number }>
//    */
//   async batchDeleteConfigs(ids: number[]): Promise<{ success: number; failed: number }> {
//     try {
//       const response = await del(configApi.BATCH_DELETE, { ids });
//       return response.data || response;
//     } catch (error) {
//       console.error('批量删除配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 获取配置变更日志
//    * @param params 查询参数
//    * @returns Promise<{ data: ConfigChangeLog[]; total: number }>
//    */
//   async getConfigChangeLogs(params?: {
//     page?: number;
//     pageSize?: number;
//     configKey?: string;
//     changedBy?: number;
//     startDate?: string;
//     endDate?: string;
//   }): Promise<{ data: ConfigChangeLog[]; total: number }> {
//     try {
//       const response = await get(configApi.CHANGE_LOGS, params);
//       return response.data || response;
//     } catch (error) {
//       console.error('获取配置变更日志失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 导出配置
//    * @param format 导出格式
//    * @param params 查询参数
//    * @returns Promise<Blob>
//    */
//   async exportConfigs(format: 'json' | 'yaml' | 'env' = 'json', params?: {
//     group?: string;
//     isSystem?: boolean;
//   }): Promise<Blob> {
//     try {
//       const response = await get(configApi.EXPORT, { format, ...params }, {
//         responseType: 'blob',
//       });
//       return response.data || response;
//     } catch (error) {
//       console.error('导出配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 导入配置
//    * @param file 配置文件
//    * @param options 导入选项
//    * @returns Promise<{ imported: number; updated: number; failed: number; details: any }>
//    */
//   async importConfigs(file: File, options?: {
//     overwrite?: boolean;
//     validate?: boolean;
//   }): Promise<{ imported: number; updated: number; failed: number; details: any }> {
//     try {
//       const formData = new FormData();
//       formData.append('file', file);
      
//       if (options) {
//         Object.keys(options).forEach(key => {
//           formData.append(key, options[key]?.toString() || '');
//         });
//       }
      
//       const response = await post(uploadApi.IMPORT_CONFIGS, formData, {
//         headers: {
//           'Content-Type': 'multipart/form-data',
//         },
//       });
      
//       return response.data || response;
//     } catch (error) {
//       console.error('导入配置失败:', error);
//       throw error;
//     }
//   }

//   /**
//    * 刷新配置缓存
//    * @returns Promise<void>
//    */
//   async refreshConfigCache(): Promise<void> {
//     try {
//       await post(configApi.REFRESH_CACHE);
//     } catch (error) {
//       console.error('刷新配置缓存失败:', error);
//       throw error;
//     }
//   }
// }

// // 导出配置服务实例
// export const configService = new ConfigService();
// export default configService;